package com.desarrolladoresandroid.libgdx.screen;

import com.badlogic.gdx.Game;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.math.Vector3;
import com.badlogic.gdx.math.collision.BoundingBox;
import com.desarrolladoresandroid.libgdx.demo1.Assets;
import com.desarrolladoresandroid.libgdx.demo1.Demo1Game;

public class MainMenuScreen implements Screen {

	Game game;
	
	OrthographicCamera guiCam; //va generando una estructura interna con todos los poligonos que tiene que dibujar y los envia de golpe a la tarjeta de video
	SpriteBatch batcher;
	
	//definir areas (para saber done tocamos la pantalla tactil)
	BoundingBox startBounds;
	BoundingBox soundBounds; 
	
	Vector3 touchPoint;
	
	public MainMenuScreen(Game game){
		this.game = game;
		guiCam= new OrthographicCamera(10,15); //ancho y alto de la camara
		guiCam.position.set(10f / 2, 15f / 2, 0);
		batcher = new SpriteBatch();
		
		startBounds = new BoundingBox(new Vector3(2,5,0),new Vector3(8,6,0));
		soundBounds = new BoundingBox(new Vector3(2,3,0),new Vector3(8,4,0));
		
		touchPoint = new Vector3();
	}
	
	
	@Override
	public void dispose() {
		batcher.dispose();
		
	}

	@Override
	public void hide() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void pause() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void render(float delta) { //poner todas las imagenes, lo que compone la escena de la pantalla
		
		//actualizar todas las variables que se tiene que estar moviendose
		//detectar que se a pulsado la pantalla
		if(Gdx.input.justTouched()){
			 
			//gracias a la camara podremos pasar de pixeles a las reglas del mundo
			guiCam.unproject(touchPoint.set(Gdx.input.getX(),Gdx.input.getY(),0));  
			
			if(startBounds.contains(touchPoint)){
				//Crea un GameScreen nuevo para inizializar la partida.
				((Demo1Game)game).gameScreen = new GameScreen(game);
				game.setScreen(((Demo1Game)game).gameScreen);
				return;
			}
	
			
		}

		
		GL10 gl = Gdx.graphics.getGL10();
		gl.glClearColor(0,0,0,1);          //establecemos el color con el que queremos borrar la pantalla
		gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
		
		
		
		guiCam.update();
		batcher.setProjectionMatrix(guiCam.combined); //con las dos lineas, proyectamos la camara (si esta con zoom y esas cosas)
		
		batcher.disableBlending(); //fondo sin transparencia
		batcher.begin();//inicialice la estructura
		batcher.draw(Assets.background,  0, 0,10,15); //dibuja esquina abajo a la izquierda
		batcher.end();
		
		batcher.enableBlending();
		batcher.begin();
		batcher.draw(Assets.title, 1, 8, 8, 6);
		batcher.draw(Assets.start,  2, 5, 6, 1);
		batcher.draw(Assets.soundon,2,3,6,1);
		batcher.end();
	}

	@Override
	public void resize(int width, int height) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void resume() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void show() {
		// TODO Auto-generated method stub
		
	}

}
